package 图.树;

public class leetcode701二叉搜索树插入节点 {

	public TreeNode solution(TreeNode root,int val) {
		if(root == null)
			return new TreeNode(val);
		recursion(root,val);
		return root;
	}
	
	/**
	 * 这个递归 的写法 就可以是有多种形式了！
	 * 可以是 void 无返回值 ，或者 是 carl 那种  有返回值的
	 * 其实 感觉 还好 都差不了太多的！
	 */
	public void recursion(TreeNode node,int val) {
		/**
		 * 这里 JVM  肯定会做  小小的 优化
		 * 虽然 写 了 两个  bool 条件
		 * 但是 如果  第一个不满足 ，第二个是不会 判断的 这就是   && 的特性！
		 */
		if(node.left == null && node.val > val) {
			node.left = new TreeNode(val);
			return ;
		}
		if(node.right == null && node.val < val) {
			node.right = new TreeNode(val);
			return ;
		}
		if(node.val > val)
			recursion(node.left,val);
		else
			recursion(node.right,val);
	}

	public static void main(String []args) {
		int a = 0;
		//  直接  dead code ，前面确定的话 后面是不会执行的！
		if( false && ++a == 1)
			System.out.println("hello wolrd" + a);
		System.out.println(a);
	}
}
